#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Filename: mesa_de_ayuda.py

##
# Módulos del sistema
# Parte gáfica
try:
    import pygtk
    pygtk.require("2.0")
    import gtk
    import gtk.glade
except ImportError, error:
    print error
    print "Necesitas la librería gráficas gtk+pygtk"

# Utilidades
import os
from datetime import datetime

##
# Módulos propios
try:
    from lib.database import UsuarioBD
except ImportError, error:
    print error
    print "Problemas con la BD"

try:
    from lib.grupo_de_resolucion import MesaDeAyuda
    from lib.empleado import Usuario
    from lib.config import WIDTH, HEIGHT
    from gui.create_ticket import CreateTicket
    from gui.msj_retroalimentacion import MensajeDeAdvertencia, MensajeDeAbout
    from gui.buscar_ticket import BuscarTicket
except ImportError, error:
    print error
    print "No se pudieron cargar los modulos necesarios para correr el sistema"
    print "Error en mesa_de_ayuda"

class MesaDeAyudaGUI:
    """Grupo de Resolución mesa de ayuda.

    Clase que se encargará de la parte grafica del actor mesa de ayuda. Es el
    único que puede abrir y cerrar ticket.

    """
    def __init__(self, usuario_registrado):
        """Constructor por defecto.

        Keyword arguments:
        usuario_registrado -- nombre de usuario logueado en el sistema

        """

        self.gladefile = "gui/ghhp.glade"
        self.wTree = gtk.glade.XML(self.gladefile, "MesaDeAyuda")
        self.window = self.wTree.get_widget("MesaDeAyuda")
        self.un_dict={"on_toolbutton1_clicked": self.create_ticket,
                "on_toolbutton2_clicked" : self.find_ticket,
                "on_toolbutton3_clicked" : self.my_ticket,
                "on_toolbutton4_clicked" : self.close_sesion,
                "on_mesa_de_ayuda_destroy" : self.close,
                "on_acerca_de2_activate" : self.about,
                "on_salir2_activate" : self.close}
        self.wTree.signal_autoconnect(self.un_dict)
        self.window.resize(WIDTH,HEIGHT)
        #Buscamos el nombre y apellido del usuario registrado en la BD
        print "Usuario logueado mesa_de_ayuda: "
        print usuario_registrado
        self.usuario_logueado = Usuario(usuario_registrado)
        self.put_user_and_date(self.usuario_logueado.apellido + " " +
                self.usuario_logueado.nombre + " ")
        # Faltaria inicializar las acciones a realizar
        self.mesa_de_ayuda = MesaDeAyuda(usuario_registrado.grupo_de_resolucion_)
        #import pdb
        #pdb.set_trace()

    def put_user_and_date(self, user):
        """Muestra el usuario y la fecha actual.

        Keyword arguments:
        user -- Usuario logueado

        """
        fecha = "Fecha: " + datetime.now().strftime("%Y-%m-%d")
        self.wTree.get_widget("label626").set_text(
                self.wTree.get_widget("label626").get_text() + user + "\n" +
                fecha)

    def create_ticket(self, widget):
        """GUI crear ticket.

        Permite generar el dialogo de crear ticket CDU01

        Keyword arguments:
        widget -- Widget de mesa de ayuda

        """
        print "Crear ticket"
        self.create_ticket = CreateTicket(self, self.usuario_logueado)

    def crearTicket(self, empleado, clasificacion, descripcion, fecha_creacion):
        """Llamará a crearTicket de la clase mesa de ayuda.

        El sistema registra el ticket con el estado de "abierto en mesa de
        ayuda"

        Keyword arguments:
        empleado -- empleado solicitante del ticket
        clasificacion -- clasificacion del problema actual
        descripcion -- descripcion del problema
        

        self.mesa_de_ayuda.crearTicket(self.usuario_logueado, empleado,
                clasificacion, descripcion, fecha_creacion)
        return len(self.mesa_de_ayuda.tickets)-1
        #import pdb
        #pdb.set_trace()
        NO SE USA MAS!!
        """

    def derivarTicket(self, grupo, fecha_derivacion, obs, posicion):
        """Llamará a derivarTicket de la clase mesa de ayuda
        
        Keyword arguments:
        grupo -- grupo al cual se deriba el ticket
        fecha_derivacion -- 
        obs -- Observacion realizada en la intervencion
        
        self.mesa_de_ayuda.derivarTicket(grupo, fecha_derivacion, obs,
                self.usuario_logueado, posicion)
        NO SE USA MAS!!
        """

    def cerrarTicket(self, observacion, fecha_cierre, posicion):
        """Llamará a cerrarTicket de la clase mesa de ayuda.

        Keyword arguments:
        observacion -- observacion de la intervencion
        fecha_cierre -- fecha de cierre
        posicion -- posicion del ticket en la lista de mesa de ayuda
        
        self.mesa_de_ayuda.cerrarTicket(self.usuario_logueado,
                observacion,
                fecha_cierre,
                posicion)
        NO SE USA MAS!!
        """
    def find_ticket(self, widget):
        """GUI buscar ticket.

        Permite generar el dialogo de buscar ticket CDU02

        Keyword arguments:
        widget -- Widget de mesa de ayuda

        """
        self.find_ticket = BuscarTicket(self)
        print "Buscar ticket"
    
    def my_ticket(self, widget):
        """Genera algo.

        Permite generar ... se me ocurrio que podiamos mostrar los ticket que
        fue generado en su sesion, ó todos lo anteriores

        Keyword arguments:
        widget -- Widget de mesa de ayuda

        """

        print "My ticket"

    def close_sesion(self, widget):
        """Cierra la sesión."""
        print "Close Sesion"
        #self.window.destroy()
        texto = "¿Está seguro que desea cerrar la sesion?"
        msj = MensajeDeAdvertencia(texto, self.window)
        if msj.msj.run() == gtk.RESPONSE_YES:
            print "Cerrando sesion"
            self.window.destroy()
        else:
            msj.msj.destroy()
        
    def close(self, widget):
        """Cierra la ventana actual."""
        print "Gracias por utilizar Ghhp"
        gtk.main_quit()

    def about(self, widget):
        """Breve explicacion del metodo/clase.

        Detalle del uso del mismo
        """
        msj = MensajeDeAbout(widget)
        msj.msj.run()
            

"""
if __name__=='__main__':
    my_aplication = MesaDeAyuda()
    gtk.main()
"""

